// ****************************************************************************
//
// Logic 7: Town
//
// ****************************************************************************

#include "defines.txt"
#define door o10
#define door_finished_opening f200
#define ego_through_doorway f201
#define ego_exited_doorway f202
#define door_finished_closing f203

if (new_room) {
  load.pic(room_no);
  draw.pic(room_no);
  discard.pic(room_no);
  set.horizon(12);

  animate.obj(o10);
  load.view(5);
  set.view(o10,5);
  set.loop(o10,0);
  set.cel(o10,0);
  position(o10,109,80);
  ignore.blocks(o10);
  ignore.objs(o10);
  set.priority(o10,4);
  stop.cycling(o10);
  draw(o10);

  reset(door_finished_opening);
  reset(ego_through_doorway);
  reset(ego_exited_doorway);
  reset(door_finished_opening);

  if (prev_room_no == 8) {
    set.cel(o10,4);
    position(o0,112,81);
    ignore.blocks(o0);
    move.obj(o0,111,100,1,ego_exited_doorway);
  }
    if (prev_room_no == 6) {
    position(o0, 1, 111);
  }

  draw(o0);
  show.pic();
}

if (ego_edge_code == left_edge)
{
  //ADD ADDITIONAL LEFT EXIT CODE HERE
  new.room(6);
}

if (said("look")) {
  print("You see a lightly populated town with a shop.");
}

if (said("look","door")) {
  print("There is a brown door leading into a shop.");
}

if (ego_exited_doorway) {
  reset(ego_exited_doorway);
  observe.blocks(o0);
  reverse.loop(door,door_finished_closing);
}

if (said("open","door")) {
  if (posn(o0,79,45,141,109))
 {
    stop.motion(o0);
    program.control();
    end.of.loop(o10,door_finished_opening);
  }
  else {
    print("You're not close enough.");
  }
}

if (door_finished_opening) {
  reset(door_finished_opening);  // If door_finished_opening remains set, the
                                 // following code will be executed on every
                                 // cycle (which we don't want).
  ignore.blocks(o0);        // allow ego to cross the blue control line
  move.obj(o0,110,83,1,ego_through_doorway);
}

if (ego_through_doorway) {
  observe.blocks(o0);
  new.room(8);
}

return();